package com.srv.pojo;

import java.io.Serializable;
import java.util.Date;

public class Reserva implements Serializable {

	private static final long serialVersionUID = -9193418620405757349L;
	
	private long rescode;
	private Veiculo veiculo;
	private Usuario usuario;
	private Date dataPartida;
	private Date dataRetorno;
	private GradeHoraria horaPartida;
	private GradeHoraria horaRetorno;
	private String poltronaPartida;
	private String poltronaRetorno;
	private Cidade cidadeOrigem;
	private Cidade cidadeDestino;

	public long getRescode() {
		return rescode;
	}

	public void setRescode(long rescode) {
		this.rescode = rescode;
	}

	public Veiculo getVeiculo() {
		return veiculo;
	}

	public void setVeiculo(Veiculo veiculo) {
		this.veiculo = veiculo;
	}

	public Date getDataPartida() {
		return dataPartida;
	}

	public void setDataPartida(Date dataPartida) {
		this.dataPartida = dataPartida;
	}

	public Date getDataRetorno() {
		return dataRetorno;
	}

	public void setDataRetorno(Date dataRetorno) {
		this.dataRetorno = dataRetorno;
	}

	public GradeHoraria getHoraPartida() {
		return horaPartida;
	}

	public void setHoraPartida(GradeHoraria horaPartida) {
		this.horaPartida = horaPartida;
	}

	public GradeHoraria getHoraRetorno() {
		return horaRetorno;
	}

	public void setHoraRetorno(GradeHoraria horaRetorno) {
		this.horaRetorno = horaRetorno;
	}

	public String getPoltronaPartida() {
		return poltronaPartida;
	}

	public void setPoltronaPartida(String poltronaPartida) {
		this.poltronaPartida = poltronaPartida;
	}

	public String getPoltronaRetorno() {
		return poltronaRetorno;
	}

	public void setPoltronaRetorno(String poltronaRetorno) {
		this.poltronaRetorno = poltronaRetorno;
	}

	public Usuario getUsuario() {
		return usuario;
	}

	public void setUsuario(Usuario usuario) {
		this.usuario = usuario;
	}

	/**
	 * @return the cidadeOrigem
	 */
	public Cidade getCidadeOrigem() {
		return cidadeOrigem;
	}

	/**
	 * @param cidadeOrigem the cidadeOrigem to set
	 */
	public void setCidadeOrigem(Cidade cidadeOrigem) {
		this.cidadeOrigem = cidadeOrigem;
	}

	/**
	 * @return the cidadeDestino
	 */
	public Cidade getCidadeDestino() {
		return cidadeDestino;
	}

	/**
	 * @param cidadeDestino the cidadeDestino to set
	 */
	public void setCidadeDestino(Cidade cidadeDestino) {
		this.cidadeDestino = cidadeDestino;
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result
				+ ((cidadeDestino == null) ? 0 : cidadeDestino.hashCode());
		result = prime * result
				+ ((cidadeOrigem == null) ? 0 : cidadeOrigem.hashCode());
		result = prime * result
				+ ((dataPartida == null) ? 0 : dataPartida.hashCode());
		result = prime * result
				+ ((horaPartida == null) ? 0 : horaPartida.hashCode());
		result = prime * result
				+ ((poltronaPartida == null) ? 0 : poltronaPartida.hashCode());
		result = prime * result + ((veiculo == null) ? 0 : veiculo.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Reserva other = (Reserva) obj;
		if (cidadeDestino == null) {
			if (other.cidadeDestino != null)
				return false;
		} else if (!cidadeDestino.equals(other.cidadeDestino))
			return false;
		if (cidadeOrigem == null) {
			if (other.cidadeOrigem != null)
				return false;
		} else if (!cidadeOrigem.equals(other.cidadeOrigem))
			return false;
		if (dataPartida == null) {
			if (other.dataPartida != null)
				return false;
		} else if (!dataPartida.equals(other.dataPartida))
			return false;
		if (horaPartida == null) {
			if (other.horaPartida != null)
				return false;
		} else if (!horaPartida.equals(other.horaPartida))
			return false;
		if (poltronaPartida == null) {
			if (other.poltronaPartida != null)
				return false;
		} else if (!poltronaPartida.equals(other.poltronaPartida))
			return false;
		if (veiculo == null) {
			if (other.veiculo != null)
				return false;
		} else if (!veiculo.equals(other.veiculo))
			return false;
		return true;
	}

}
